/**
 * 通用工具方法
 */

/**
 * 日期格式化函数
 * @param {string} dateString - 日期字符串
 * @returns {string} 格式化后的日期 (YYYY-MM-DD)
 */
export const formatDate = (dateString) => {
  if (!dateString) return ''
  const date = new Date(dateString)
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  return `${year}-${month}-${day}`
}

/**
 * 构建查询条件
 * @param {number} carId - 车辆ID
 * @param {string|number} year - 年份筛选
 * @returns {Object} 查询条件对象
 */
export const buildWhereClause = (carId, year) => {
  const where = { car_id: carId };
  if (year && year !== '全部') {
    const y = parseInt(year);
    where.date__between = [`${y}-01-01`, `${y}-12-31`];
  }
  return where;
};

/**
 * 按日期排序
 * @param {Array} records - 记录列表
 * @returns {Array} 排序后的记录列表
 */
export const sortByDate = (records) => {
  return records.sort((a, b) => new Date(a.date) - new Date(b.date));
};

/**
 * 安全格式化数值，确保不会除以0
 * @param {number} value - 要格式化的值
 * @param {number} decimals - 保留小数位数
 * @returns {string} 格式化后的字符串
 */
export const safeFixed = (value, decimals = 2) => {
  // 确保value是有效的数字
  const num = parseFloat(value);
  // 如果不是数字或NaN，返回格式化的0
  return isNaN(num) ? '0.00' : num.toFixed(decimals);
};

/**
 * 安全格式化数字，添加千位分隔符
 * @param {number} value - 要格式化的值
 * @returns {string} 格式化后的字符串
 */
export const safeLocaleString = (value) => {
  // 确保value是有效的数字
  const num = parseFloat(value);
  // 如果不是数字或NaN，返回0
  return isNaN(num) ? '0' : num.toLocaleString();
};

/**
 * 计算统计数据（通用方法）
 * @param {Array} records - 记录列表
 * @param {string} amountField - 金额字段名
 * @param {string} mileageField - 里程字段名
 * @returns {Object} 统计数据对象
 */
export const calculateCommonStats = (records, amountField = 'amount', mileageField = 'mileage') => {
  // 计算总金额
  const totalAmount = records.reduce((sum, record) => sum + (record[amountField] || 0), 0);
  
  return {
    totalAmount: totalAmount.toFixed(2)
  };
};